////////////////////////////////////////////////
//	File			:	"ObjectFactory.h"
//
//	Author			:	Steven Seufert (SMS)
//			
//	Last Modified	:	January 18, 2012
//
//	Purpose			:	To create new game objects for the game
/////////////////////////////////////////////////
#ifndef OBJECT_FACTORY_H
#define OBJECT_FACTORY_H

#include "CPlayer.h"


#include "CEnemy.h"
#include "CSpellBase.h"
#include "CBase.h"


class CObjectFactory
{
private:

	// constructor
	CObjectFactory(void) {}
	
	// destructor
	~CObjectFactory(void) {}

	// copy constructor
	CObjectFactory(const CObjectFactory&);

	// assignment operator
	CObjectFactory& operator=(const CObjectFactory&);
public:
	// call the instance to our singleton
	static CObjectFactory* GetInstance(void)		{ static CObjectFactory instance; return &instance; }

	///////////////////////////////////////////////////
	//	Function	:	"CreatePlayer"
	//	
	//	Last Modified:	January 18, 2012
	//
	//	Input		:	none
	//										
	//	Return		:	a pointer to a new CPlayer oject
	//
	//	Purpose		:	returns a pointer to a new CPlayer object
	//////////////////////////////////////////////////
	static CPlayer* CreatePlayer()			{ CPlayer* player = new CPlayer(); return player; }

	///////////////////////////////////////////////////
	//	Function	:	"CreateEnemy"
	//	
	//	Last Modified:	January 18, 2012
	//
	//	Input		:	none
	//										
	//	Return		:	a pointer to a new CEnemy oject
	//
	//	Purpose		:	returns a pointer to a new CEnemy object
	//////////////////////////////////////////////////
	static CEnemy* CreateEnemy()			{ CEnemy* enemy = new CEnemy(); return enemy; }

	///////////////////////////////////////////////////
	//	Function	:	"CreateSpell"
	//	
	//	Last Modified:	January 18, 2012
	//
	//	Input		:	none
	//										
	//	Return		:	a pointer to a new CSpellBase oject
	//
	//	Purpose		:	returns a pointer to a new CSpellBase object
	//////////////////////////////////////////////////
	static CSpellBase* CreateSpell()			{ CSpellBase* spell = new CSpellBase(); return spell; }

	///////////////////////////////////////////////////
	//	Function	:	"CreateBaseObject"
	//	
	//	Last Modified:	January 18, 2012
	//
	//	Input		:	none
	//										
	//	Return		:	a pointer to a new CBase oject
	//
	//	Purpose		:	returns a pointer to a new CBase object
	//////////////////////////////////////////////////
	static CBase* CreateBaseObject()			{ CBase* baseObject = new CBase(); return baseObject; }


};
#endif